From: Ian Campbell Date: Tue, 24 May 2011 17:27:50 +0000 (+0100) Subject: libxl: refactor libxl__domain_firmware to choose based on X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10298 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=879dea3e17fb07c16a55d6437e39b855fa29c1cb;p=xen.git libxl: refactor libxl__domain_firmware to choose based on device_model_version Note that the default remains "hvmloader" in both cases, this just clarifies the intent for now. Signed-off-by: Ian Campbell Acked-by: Ian Jackson Committed-by: Ian Jackson --- diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index d515145245..87d424b620 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -273,9 +273,28 @@ static const char *libxl__domain_firmware(libxl__gc *gc, libxl_domain_build_info *info, libxl_device_model_info *dm_info) { - return libxl__abs_path(gc, - info->u.hvm.firmware ? : "hvmloader", - libxl_xenfirmwaredir_path()); + libxl_ctx *ctx = libxl__gc_owner(gc); + const char *firmware; + + if (info->u.hvm.firmware) + firmware = info->u.hvm.firmware; + else { + switch (dm_info->device_model_version) + { + case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: + firmware = "hvmloader"; + break; + case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: + firmware = "hvmloader"; + break; + default: + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "invalid device model version %d", + dm_info->device_model_version); + return NULL; + break; + } + } + return libxl__abs_path(gc, firmware, libxl_xenfirmwaredir_path()); } int libxl__build_hvm(libxl__gc *gc, uint32_t domid,